Java 8 এর পর, java.time
প্যাকেজটি তারিখ এবং সময় সম্পর্কিত আধুনিক API সরবরাহ করে। এর মধ্যে Instant
ক্লাসটি বিশেষভাবে UTC (Coordinated Universal Time) ভিত্তিক একটি নির্দিষ্ট সময় চিহ্নিত করার জন্য ব্যবহৃত হয়। এটি একটি স্ট্যাটিক টাইম স্ট্যাম্প হিসেবে কাজ করে যা epoch time (1970-01-01T00:00:00Z) থেকে সেকেন্ড বা ন্যানোসেকেন্ড পরিমাপ করে।
Instant
ক্লাসের বৈশিষ্ট্য:Instant
ক্লাসটি time-stamp বা সঠিক সময়ের প্রতিনিধিত্ব করে যা epoch থেকে গণনা করা হয়। এটি milliseconds বা nanoseconds ভিত্তিক সময় প্রকাশ করতে সক্ষম।Instant
ক্লাসের জন্য গুরুত্বপূর্ণ মেথডগুলি হলো now()
, ofEpochSecond()
, plus()
, minus()
, toString()
, getEpochSecond()
, ইত্যাদি।Instant
ক্লাসের ব্যবহার:now()
মেথড ব্যবহার করে বর্তমান সময় পাওয়াInstant.now()
মেথড ব্যবহার করে আপনি বর্তমান UTC সময় পেতে পারেন। এটি Instant
অবজেক্ট তৈরি করে, যা বর্তমান সময়ের epoch second থেকে হিসাব করা হয়।
import java.time.Instant;
public class InstantExample {
public static void main(String[] args) {
// Get the current time (current instant)
Instant now = Instant.now();
// Print the current instant
System.out.println("Current Instant: " + now);
}
}
আউটপুট:
Current Instant: 2024-12-23T12:15:30.123456Z
ব্যাখ্যা:
Instant.now()
মেথডটি বর্তমান UTC সময় প্রদান করে, যা ISO-8601 ফরম্যাটে প্রিন্ট হয়।ofEpochSecond()
মেথড ব্যবহার করে সময় তৈরি করাInstant.ofEpochSecond()
মেথডটি epoch second থেকে Instant তৈরি করতে ব্যবহৃত হয়।
import java.time.Instant;
public class InstantExample {
public static void main(String[] args) {
// Create Instant from epoch seconds
Instant instant = Instant.ofEpochSecond(1627849200); // Example epoch seconds (2021-08-01T00:00:00Z)
// Print the created instant
System.out.println("Instant from epoch second: " + instant);
}
}
আউটপুট:
Instant from epoch second: 2021-08-01T00:00:00Z
ব্যাখ্যা:
Instant.ofEpochSecond(1627849200)
মেথডে 1627849200 সেকেন্ড epoch time হিসেবে প্রদান করা হয়েছে, যা 2021 সালের 1 আগস্ট 00:00:00 UTC এর সমান।plus()
এবং minus()
মেথড ব্যবহার করে সময় যোগ বা বিয়োগ করাInstant
ক্লাসে plus()
এবং minus()
মেথড ব্যবহার করে আপনি নির্দিষ্ট পরিমাণ সময় যোগ বা বিয়োগ করতে পারেন। এটি সময়ের সাথে কাজ করার জন্য খুবই উপকারী।
import java.time.Instant;
public class InstantExample {
public static void main(String[] args) {
// Get the current instant
Instant now = Instant.now();
System.out.println("Current Instant: " + now);
// Add 5 hours to the current instant
Instant fiveHoursLater = now.plusSeconds(5 * 60 * 60);
System.out.println("5 hours later: " + fiveHoursLater);
// Subtract 2 days from the current instant
Instant twoDaysEarlier = now.minusSeconds(2 * 24 * 60 * 60);
System.out.println("2 days earlier: " + twoDaysEarlier);
}
}
আউটপুট:
Current Instant: 2024-12-23T12:30:45.123456Z
5 hours later: 2024-12-23T17:30:45.123456Z
2 days earlier: 2024-12-21T12:30:45.123456Z
ব্যাখ্যা:
plusSeconds()
মেথডের মাধ্যমে বর্তমান সময়ের সাথে 5 ঘণ্টা যোগ করা হয়েছে।minusSeconds()
মেথডের মাধ্যমে 2 দিন বিয়োগ করা হয়েছে।toString()
মেথড ব্যবহার করে Instant কে String এ রূপান্তর করাtoString()
মেথড ব্যবহার করে Instant
অবজেক্টকে স্ট্রিং ফরম্যাটে রূপান্তর করা যায়। এটি ISO-8601 স্ট্যান্ডার্ড ফরম্যাটে রূপান্তরিত হয়।
import java.time.Instant;
public class InstantExample {
public static void main(String[] args) {
// Get the current instant
Instant now = Instant.now();
// Convert Instant to String
String instantString = now.toString();
System.out.println("Instant as String: " + instantString);
}
}
আউটপুট:
Instant as String: 2024-12-23T12:45:30.123456Z
ব্যাখ্যা:
toString()
মেথড Instant
অবজেক্টকে ISO-8601 স্ট্যান্ডার্ড ফরম্যাটে রূপান্তর করে, যেমন 2024-12-23T12:45:30.123456Z
।getEpochSecond()
মেথড ব্যবহার করে epoch second বের করাgetEpochSecond()
মেথড ব্যবহার করে আপনি Instant
থেকে epoch time (সেকেন্ডে) বের করতে পারেন।
import java.time.Instant;
public class InstantExample {
public static void main(String[] args) {
// Get the current instant
Instant now = Instant.now();
// Get epoch second
long epochSecond = now.getEpochSecond();
System.out.println("Epoch Second: " + epochSecond);
}
}
আউটপুট:
Epoch Second: 1703657530
ব্যাখ্যা:
getEpochSecond()
মেথডটি Instant
অবজেক্ট থেকে epoch second বের করে, যা 1970-01-01T00:00:00Z থেকে গণনা করা সেকেন্ডের সংখ্যা।Instant
ক্লাস UTC সময়ের ভিত্তিতে একটি নির্দিষ্ট সময় চিহ্নিত করে এবং epoch second বা nanoseconds ভিত্তিক সময় ব্যবস্থাপনা করে।now()
, ofEpochSecond()
, plus()
, minus()
, toString()
, এবং getEpochSecond()
সহ অনেক মেথড Instant
ক্লাসে উপলব্ধ যা সময় এবং তারিখের সাথে কার্যকরীভাবে কাজ করতে সহায়তা করে।Instant
ক্লাসটি সময়ের পরিমাপ এবং টাইমস্ট্যাম্প সম্পর্কিত কাজের জন্য খুবই গুরুত্বপূর্ণ, বিশেষত যখন আপনি epoch time বা UTC ভিত্তিক সময় ব্যবস্থাপনা করতে চান।
Instant
ক্লাসটি Java 8-এ java.time
প্যাকেজের অংশ হিসাবে প্রবর্তিত হয়েছে এবং এটি UTC (Coordinated Universal Time) বা Epoch সময়ের ভিত্তিতে পূর্ণ সূক্ষ্মতার সাথে সময় (Timestamp) প্রতিনিধিত্ব করে। Instant
ক্লাসটি টাইমজোন এবং লোকাল টাইমের সাথে সম্পর্কিত নয়, বরং এটি সময়ের নির্দিষ্ট মুহূর্ত (moment) বা ইভেন্টের প্রতিনিধিত্ব করে, যা একটি নির্দিষ্ট মুহূর্তের সাথে সম্পর্কিত সেকেন্ড এবং ন্যানোসেকেন্ড গণনা করে।
Instant
ক্লাসের ভূমিকা:Instant
ক্লাসটি মূলত টাইমস্ট্যাম্প (timestamp) বা Unix epoch time প্রতিনিধিত্ব করে, যা 1970 সালের 1 জানুয়ারি, 00:00:00 UTC থেকে সেকেন্ড এবং ন্যানোসেকেন্ডের পরিমাণ গণনা করে।Instant
ক্লাসটি সাধারণত লগ, ট্রানজেকশন, বা সিস্টেমের সময় সিলোচুক্তির জন্য ব্যবহৃত হয়, যেখানে টাইমস্ট্যাম্পের ভিত্তিতে ঘটনার বিশ্লেষণ বা লগ করা হয়।Instant
ক্লাসের ব্যবহার:Instant
ক্লাসের মাধ্যমে আপনি একটি নির্দিষ্ট সময়ে পৌঁছানোর জন্য সময় যোগ বা কমানোর কাজ করতে পারেন, এবং এটি অন্যান্য সময়ের ক্লাসের সাথে তুলনা করা যায়। এটি টাইমস্ট্যাম্প হিসেবে ডেটা স্টোর করতে ব্যবহৃত হতে পারে, বিশেষ করে যখন নির্দিষ্ট সময়ের সাথে সিস্টেমের ইভেন্ট লগ করতে হয়।
Instant
ক্লাসের প্রধান মেথডসমূহ:now()
: বর্তমান সময়কে Instant
হিসেবে পেতে ব্যবহৃত হয়।ofEpochSecond(long epochSecond)
: নির্দিষ্ট epoch second থেকে Instant
তৈরি করে।plusSeconds(long seconds)
: নির্দিষ্ট সেকেন্ড যোগ করে একটি নতুন Instant
তৈরি করে।minusSeconds(long seconds)
: নির্দিষ্ট সেকেন্ড বিয়োগ করে একটি নতুন Instant
তৈরি করে।getEpochSecond()
: Instant
এর epoch second (সেকেন্ড) রিটার্ন করে।toEpochMilli()
: Instant
কে মিলিসেকেন্ডে কনভার্ট করে।Instant
এর উদাহরণ:now()
Method: বর্তমান সময়ের Instant
তৈরি করাimport java.time.Instant;
public class InstantExample {
public static void main(String[] args) {
// Get the current Instant
Instant now = Instant.now();
System.out.println("Current Instant: " + now);
}
}
Output:
Current Instant: 2024-12-23T10:15:30.123456Z
ব্যাখ্যা:
Instant.now()
বর্তমান সময়ের UTC ভিত্তিক Instant
অবজেক্ট রিটার্ন করে, যা সেকেন্ড এবং ন্যানোসেকেন্ডের সঠিক সময় প্রদান করে।ofEpochSecond(long epochSecond)
Method: Epoch সেকেন্ড থেকে Instant
তৈরি করাimport java.time.Instant;
public class InstantEpochExample {
public static void main(String[] args) {
// Create an Instant from a specific epoch second
Instant instant = Instant.ofEpochSecond(1609459200); // Unix epoch: 2021-01-01T00:00:00Z
System.out.println("Instant from Epoch Second: " + instant);
}
}
Output:
Instant from Epoch Second: 2021-01-01T00:00:00Z
ব্যাখ্যা:
Instant.ofEpochSecond(1609459200)
Unix epoch টাইম (যা 2021 সালের জানুয়ারি 1 তারিখে পরিবর্তিত হয়) থেকে Instant
তৈরি করে।plusSeconds(long seconds)
Method: সেকেন্ড যোগ করাimport java.time.Instant;
public class InstantPlusSecondsExample {
public static void main(String[] args) {
Instant now = Instant.now();
System.out.println("Current Instant: " + now);
// Add 100 seconds to the current Instant
Instant futureInstant = now.plusSeconds(100);
System.out.println("Instant after 100 seconds: " + futureInstant);
}
}
Output:
Current Instant: 2024-12-23T10:15:30.123456Z
Instant after 100 seconds: 2024-12-23T10:17:10.123456Z
ব্যাখ্যা:
plusSeconds(100)
মেথডটি বর্তমান Instant
এর সাথে 100 সেকেন্ড যোগ করে এবং একটি নতুন Instant
তৈরি করে।minusSeconds(long seconds)
Method: সেকেন্ড বিয়োগ করাimport java.time.Instant;
public class InstantMinusSecondsExample {
public static void main(String[] args) {
Instant now = Instant.now();
System.out.println("Current Instant: " + now);
// Subtract 50 seconds from the current Instant
Instant pastInstant = now.minusSeconds(50);
System.out.println("Instant before 50 seconds: " + pastInstant);
}
}
Output:
Current Instant: 2024-12-23T10:15:30.123456Z
Instant before 50 seconds: 2024-12-23T10:14:40.123456Z
ব্যাখ্যা:
minusSeconds(50)
মেথডটি বর্তমান Instant
থেকে 50 সেকেন্ড বিয়োগ করে একটি নতুন Instant
তৈরি করে।toEpochMilli()
Method: Instant কে মিলিসেকেন্ডে কনভার্ট করাimport java.time.Instant;
public class InstantToEpochMilliExample {
public static void main(String[] args) {
Instant now = Instant.now();
System.out.println("Current Instant: " + now);
// Convert Instant to epoch milliseconds
long epochMilli = now.toEpochMilli();
System.out.println("Epoch Milliseconds: " + epochMilli);
}
}
Output:
Current Instant: 2024-12-23T10:15:30.123456Z
Epoch Milliseconds: 1703356530123
ব্যাখ্যা:
toEpochMilli()
মেথডটি Instant
কে মিলিসেকেন্ডে রূপান্তর করে, যা epoch time হিসাবে পরিচিত।Instant
এর প্রধান সুবিধা:Instant
ইউটিসি (UTC) ভিত্তিক সময় প্রতিনিধিত্ব করে এবং এটি সময় এবং তারিখের কাজ সঠিকভাবে করতে সহায়তা করে, যেহেতু এটি টাইমজোন ইস্যু থেকে মুক্ত থাকে।Instant
টাইমস্ট্যাম্প হিসেবে ব্যবহৃত হতে পারে, যেখানে কোনো নির্দিষ্ট মুহূর্তের সাথে সম্পর্কিত সেকেন্ড এবং ন্যানোসেকেন্ডের পরিমাণ পাওয়া যায়।Instant
শুধুমাত্র সেকেন্ড এবং ন্যানোসেকেন্ড প্রতিনিধিত্ব করে, এটি LocalDateTime
বা ZonedDateTime
এর তুলনায় অনেক দ্রুত এবং কম মেমরি ব্যবহৃত হয়।Instant
টাইমজোন সম্পর্কিত তথ্য ধারণ করে না, এবং এটি পৃথিবীর যে কোনো জায়গায় একই সময় প্রতিনিধিত্ব করবে।Instant
ক্লাসটি UTC-based timestamp বা Unix epoch time প্রতিনিধিত্ব করে এবং এটি সময় এবং তারিখের সঠিক মুহূর্ত ম্যানেজ করতে ব্যবহৃত হয়।Instant.now()
, plusSeconds()
, minusSeconds()
, এবং toEpochMilli()
এর মতো মেথডের মাধ্যমে সময় যোগ বা বিয়োগ এবং টাইমস্ট্যাম্প হিসাব করতে ব্যবহৃত হয়।Instant
এবং Epoch Time হল Java 8 থেকে java.time
প্যাকেজে পরিচিত কিছু গুরুত্বপূর্ণ সময় সম্পর্কিত ধারণা। Instant
ক্লাস এবং Epoch Time (Unix Time) সময়ের একটি নির্দিষ্ট মুহূর্ত প্রতিনিধিত্ব করে, যা UTC (Coordinated Universal Time) থেকে সেকেন্ড এবং ন্যানোসেকেন্ডের হিসাব অনুযায়ী নির্ধারিত হয়।
Epoch Time বা Unix Time হলো 1970 সালের জানুয়ারির 1 তারিখ (00:00:00 UTC) থেকে শুরু হওয়া সেকেন্ড এবং ন্যানোসেকেন্ডের সংখ্যা। এটি পৃথিবীজুড়ে কম্পিউটার সিস্টেমে সময় ট্র্যাক করার একটি সাধারণ পদ্ধতি। সাধারণত এটি সেকেন্ড হিসেবেই ব্যবহৃত হয় (যদিও কিছু সিস্টেম ন্যানোসেকেন্ড পর্যন্ত হিসেব করে থাকে)।
Instant
ক্লাস:Instant
ক্লাসটি java.time
প্যাকেজে একটি নির্দিষ্ট সময় মুহূর্তের প্রতিনিধিত্ব করে। এটি UTC টাইমজোনে একটি নির্দিষ্ট মুহূর্তের epoch second (যা 1970 সালের জানুয়ারি 1 থেকে গণনা শুরু হয়) এবং nanosecond হিসেবে সময় ধারণ করে।
Instant
এর ফিচারস:Instant
মূলত ইউনিভার্সাল সময় (UTC) দিয়ে কাজ করে।Instant
কখনো টাইমজোন নির্ভরশীল নয়, তাই এটি ZonedDateTime
বা LocalDateTime
এর তুলনায় একটি নির্দিষ্ট সময় মুহূর্তের একটি অপরিবর্তনীয় রেফারেন্স।Instant
ক্লাসের ব্যবহার:Instant.now()
- বর্তমান সময়ের একটি Instant
অবজেক্ট তৈরি করে।Instant.ofEpochSecond()
- এক্সেপ্ট সেকেন্ড থেকে Instant
তৈরি করে।Instant.ofEpochMilli()
- মিলিসেকেন্ড থেকে Instant
তৈরি করে।Instant.plus()
এবং Instant.minus()
- সময় যোগ এবং বিয়োগ করার জন্য।Instant
দিয়ে নির্দিষ্ট সময় কাজ করাInstant.now()
Instant.now()
মেথডটি বর্তমান সময়ের Instant
অবজেক্ট তৈরি করে যা epoch second
এবং nanosecond
হিসেবে নির্দিষ্ট।
import java.time.Instant;
public class InstantNowExample {
public static void main(String[] args) {
// Get current time as Instant
Instant now = Instant.now();
System.out.println("Current Instant: " + now);
}
}
Output:
Current Instant: 2024-12-23T09:15:30.123456789Z
ব্যাখ্যা:
Instant.now()
বর্তমান সময় এবং UTC টাইমজোনে একটি Instant
অবজেক্ট তৈরি করে।Instant.ofEpochSecond()
Instant.ofEpochSecond()
মেথডটি epoch second (1970 সালের জানুয়ারির 1 তারিখ থেকে সেকেন্ড হিসাবে পরিমাপ করা) থেকে একটি Instant
তৈরি করে।
import java.time.Instant;
public class InstantEpochExample {
public static void main(String[] args) {
// Create Instant from epoch second
Instant instant = Instant.ofEpochSecond(1609459200); // January 1, 2021 00:00:00 UTC
System.out.println("Instant from epoch second: " + instant);
}
}
Output:
Instant from epoch second: 2021-01-01T00:00:00Z
ব্যাখ্যা:
Instant.ofEpochSecond(1609459200)
ব্যবহার করে 2021 সালের জানুয়ারি 1 তারিখ, 00:00:00 UTC সময়কে Instant
অবজেক্ট হিসেবে তৈরি করা হয়েছে। এখানে 1609459200
হলো Unix epoch থেকে 2021-01-01T00:00:00 এর সেকেন্ড।Instant.ofEpochMilli()
Instant.ofEpochMilli()
মেথডটি epoch milliseconds (1970 সালের জানুয়ারির 1 তারিখ থেকে মিলিসেকেন্ড হিসাবে পরিমাপ করা) থেকে একটি Instant
তৈরি করে।
import java.time.Instant;
public class InstantEpochMilliExample {
public static void main(String[] args) {
// Create Instant from epoch milliseconds
Instant instant = Instant.ofEpochMilli(1609459200000L); // January 1, 2021 00:00:00 UTC
System.out.println("Instant from epoch milliseconds: " + instant);
}
}
Output:
Instant from epoch milliseconds: 2021-01-01T00:00:00Z
ব্যাখ্যা:
Instant.ofEpochMilli(1609459200000L)
ব্যবহার করে 2021 সালের জানুয়ারি 1 তারিখ, 00:00:00 UTC সময়কে Instant
অবজেক্ট হিসেবে তৈরি করা হয়েছে। এখানে 1609459200000L
হলো Unix epoch থেকে 2021-01-01T00:00:00 এর মিলিসেকেন্ড।Instant
Instant
এ সময় যোগ বা বিয়োগ করতে plus()
এবং minus()
মেথড ব্যবহার করা হয়।
import java.time.Instant;
public class InstantPlusMinusExample {
public static void main(String[] args) {
// Get current time as Instant
Instant now = Instant.now();
System.out.println("Current Instant: " + now);
// Add 2 hours to the current Instant
Instant futureTime = now.plusSeconds(2 * 60 * 60); // Adding 2 hours (in seconds)
System.out.println("Future Time (after 2 hours): " + futureTime);
// Subtract 3 days from the current Instant
Instant pastTime = now.minusSeconds(3 * 24 * 60 * 60); // Subtracting 3 days (in seconds)
System.out.println("Past Time (3 days ago): " + pastTime);
}
}
Output:
Current Instant: 2024-12-23T10:30:15.123456789Z
Future Time (after 2 hours): 2024-12-23T12:30:15.123456789Z
Past Time (3 days ago): 2024-12-20T10:30:15.123456789Z
ব্যাখ্যা:
plusSeconds(2 * 60 * 60)
2 ঘণ্টা যোগ করেছে, এবং minusSeconds(3 * 24 * 60 * 60)
3 দিন বিয়োগ করেছে।Instant
এর ভূমিকা এবং ব্যবহারInstant
ক্লাসটি UTC টাইমজোনে সময়ের একটি নির্দিষ্ট মুহূর্ত প্রতিনিধিত্ব করে।Instant
ব্যবহার করে সেকেন্ড বা মিলিসেকেন্ডে সময় যোগ বা বিয়োগ করা যায়, যা সময়ের নির্দিষ্ট মুহূর্তের জন্য উপযোগী।Instant
ক্লাসটি সময়ের একটি নির্দিষ্ট মুহূর্তকে UTC টাইমজোনে প্রতিনিধিত্ব করে।Instant
কে টাইমজোন নির্ধারণ করতে ZonedDateTime
বা OffsetDateTime
এর সাথে ব্যবহার করা যেতে পারে, তবে এটি নিজে কোন টাইমজোন ধারণ করে না।Instant
, ZonedDateTime
এবং LocalDateTime
হল java.time
প্যাকেজের গুরুত্বপূর্ণ ক্লাস। Instant
একটি নির্দিষ্ট সময়ের মুহূর্ত (epoch time) ধারণ করে এবং UTC (Coordinated Universal Time) সময় অঞ্চলে সেটি প্রতিনিধিত্ব করে। অন্যদিকে, ZonedDateTime
এবং LocalDateTime
নির্দিষ্ট সময় অঞ্চলের সাথে বা নির্দিষ্ট সময় অঞ্চল ছাড়া স্থানীয় সময় ধারণ করে।
যেহেতু Instant
একটি নির্দিষ্ট সময়কে epoch second হিসেবে রেকর্ড করে, তাই এটি ZonedDateTime
বা LocalDateTime
এ রূপান্তর করার জন্য কিছু অতিরিক্ত তথ্যের প্রয়োজন, যেমন সময় অঞ্চল।
Instant
থেকে ZonedDateTime
এ রূপান্তরInstant
কে ZonedDateTime
এ রূপান্তর করতে ZoneId
(যেমন ZoneId.of("Asia/Kolkata")
) ব্যবহার করা হয়। এটি Instant
কে একটি নির্দিষ্ট সময় অঞ্চলের স্থানীয় সময়ে রূপান্তরিত করে।
Instant
কে ZonedDateTime
এ রূপান্তর করাimport java.time.*;
public class InstantToZonedDateTime {
public static void main(String[] args) {
// Get the current instant (UTC time)
Instant instant = Instant.now();
System.out.println("Current Instant: " + instant);
// Convert Instant to ZonedDateTime with specific timezone
ZonedDateTime zonedDateTime = instant.atZone(ZoneId.of("Asia/Kolkata"));
System.out.println("ZonedDateTime in Asia/Kolkata: " + zonedDateTime);
}
}
Current Instant: 2024-12-23T08:15:45.678Z
ZonedDateTime in Asia/Kolkata: 2024-12-23T13:45:45.678+05:30[Asia/Kolkata]
Instant.now()
: এটি UTC সময়ে বর্তমান মুহূর্ত প্রদান করে।instant.atZone(ZoneId.of("Asia/Kolkata"))
: Instant
কে Asia/Kolkata
সময় অঞ্চলের স্থানীয় সময়ে রূপান্তরিত করা হয়।Instant
থেকে LocalDateTime
এ রূপান্তরLocalDateTime
শুধুমাত্র স্থানীয় সময় ধারণ করে এবং এতে কোনো সময় অঞ্চল নেই। তাই Instant
কে LocalDateTime
এ রূপান্তর করার জন্য একটি সময় অঞ্চল প্রদান করতে হবে। ZonedDateTime
এর সাথে toLocalDateTime()
মেথড ব্যবহার করে আপনি Instant
কে LocalDateTime
এ রূপান্তর করতে পারেন।
Instant
কে LocalDateTime
এ রূপান্তর করাimport java.time.*;
public class InstantToLocalDateTime {
public static void main(String[] args) {
// Get the current instant (UTC time)
Instant instant = Instant.now();
System.out.println("Current Instant: " + instant);
// Convert Instant to ZonedDateTime with specific timezone (Asia/Kolkata)
ZonedDateTime zonedDateTime = instant.atZone(ZoneId.of("Asia/Kolkata"));
// Convert ZonedDateTime to LocalDateTime (without time zone)
LocalDateTime localDateTime = zonedDateTime.toLocalDateTime();
System.out.println("LocalDateTime in Asia/Kolkata: " + localDateTime);
}
}
Current Instant: 2024-12-23T08:30:45.678Z
LocalDateTime in Asia/Kolkata: 2024-12-23T13:30:45.678
instant.atZone(ZoneId.of("Asia/Kolkata"))
: Instant
কে Asia/Kolkata
সময় অঞ্চলের সাথে ZonedDateTime
এ রূপান্তর করা হয়েছে।zonedDateTime.toLocalDateTime()
: তারপর ZonedDateTime
থেকে LocalDateTime
এ রূপান্তর করা হয়েছে। এখানে LocalDateTime
এ সময় অঞ্চল তথ্য হারিয়ে গেছে, এবং এটি শুধুমাত্র স্থানীয় সময় ধারণ করে।আপনি ZonedDateTime
বা LocalDateTime
থেকে Instant
এ রূপান্তর করতে পারেন।
ZonedDateTime.toInstant()
: এটি ZonedDateTime
থেকে Instant
এ রূপান্তর করে।LocalDateTime.atZone()
: এটি LocalDateTime
কে ZonedDateTime
এ রূপান্তর করে এবং পরে toInstant()
ব্যবহার করে Instant
তৈরি করতে হয়।ZonedDateTime
থেকে Instant
এ রূপান্তরimport java.time.*;
public class ZonedDateTimeToInstant {
public static void main(String[] args) {
// Get the current ZonedDateTime with a specific time zone
ZonedDateTime zonedDateTime = ZonedDateTime.now(ZoneId.of("America/New_York"));
System.out.println("ZonedDateTime in New York: " + zonedDateTime);
// Convert ZonedDateTime to Instant
Instant instant = zonedDateTime.toInstant();
System.out.println("Instant from ZonedDateTime: " + instant);
}
}
ZonedDateTime in New York: 2024-12-23T03:45:00-05:00[America/New_York]
Instant from ZonedDateTime: 2024-12-23T08:45:00Z
ZonedDateTime.toInstant()
: এটি ZonedDateTime
কে UTC টাইমে একটি Instant এ রূপান্তরিত করেছে।LocalDateTime
থেকে Instant
এ রূপান্তরimport java.time.*;
public class LocalDateTimeToInstant {
public static void main(String[] args) {
// Get the current LocalDateTime
LocalDateTime localDateTime = LocalDateTime.now();
System.out.println("LocalDateTime: " + localDateTime);
// Convert LocalDateTime to ZonedDateTime with a specific time zone
ZonedDateTime zonedDateTime = localDateTime.atZone(ZoneId.of("Asia/Kolkata"));
// Convert ZonedDateTime to Instant
Instant instant = zonedDateTime.toInstant();
System.out.println("Instant from LocalDateTime: " + instant);
}
}
LocalDateTime: 2024-12-23T14:45:00
Instant from LocalDateTime: 2024-12-23T09:15:00Z
LocalDateTime.atZone(ZoneId.of("Asia/Kolkata"))
: এটি LocalDateTime
কে Asia/Kolkata
সময় অঞ্চলের সাথে ZonedDateTime
এ রূপান্তরিত করেছে।toInstant()
: পরে ZonedDateTime
থেকে Instant
তৈরি করা হয়েছে।Instant
থেকে ZonedDateTime
বা LocalDateTime
এ রূপান্তর করতে, আপনি atZone()
ব্যবহার করে সময় অঞ্চল যুক্ত করতে পারেন এবং তারপর toLocalDateTime()
বা toInstant()
ব্যবহার করে প্রয়োজনীয় রূপান্তর করতে পারেন।ZonedDateTime
সময় অঞ্চল সহ স্থানীয় সময় ধারণ করে, যেখানে LocalDateTime
কেবলমাত্র সময় এবং তারিখ ধারণ করে (কোনো সময় অঞ্চল ছাড়াই)।Instant
ক্লাসটি Java 8 তে java.time
প্যাকেজে অন্তর্ভুক্ত হয়েছে এবং এটি UTC (Coordinated Universal Time) টাইম স্ট্যাম্পের একটি নির্দিষ্ট মুহূর্ত (epoch time) প্রতিনিধিত্ব করে। এটি অত্যন্ত সঠিক সময়ের মান প্রদান করে, যা সময়সীমার নির্দিষ্ট মুহূর্ত (milliseconds বা nanoseconds) হিসেবে স্টোর হয়। Instant
সাধারণত time-based calculations এবং timestamps তৈরি করতে ব্যবহৃত হয়, যেখানে সময় অঞ্চল (time zone) বা সময়ের পার্থক্য কোনও ভূমিকা রাখে না।
Instant
ক্লাসের প্রধান বৈশিষ্ট্য:Instant.now()
: বর্তমান সময়ের Instant
পাবেন (এটি UTC সময় অঞ্চল অনুসারে হবে)।Instant.ofEpochSecond(long epochSecond)
: epoch সেকেন্ড (1970-01-01T00:00:00Z থেকে শুরু) থেকে Instant
তৈরি করবেন।Instant.ofEpochMilli(long epochMilli)
: epoch মিলিসেকেন্ড থেকে Instant
তৈরি করবেন।plusSeconds(long seconds)
এবং minusSeconds(long seconds)
: Instant
এ সেকেন্ড যোগ বা বিয়োগ করা।Instant
ক্লাসের উদাহরণ সহ ব্যবহার:Instant.now()
- বর্তমান সময় পাওয়া:import java.time.Instant;
public class InstantExample {
public static void main(String[] args) {
// Get the current Instant (UTC time)
Instant currentInstant = Instant.now();
System.out.println("Current Instant: " + currentInstant);
}
}
Current Instant: 2024-12-23T09:34:12.123456Z
ব্যাখ্যা:
Instant.now()
মেথডটি বর্তমান UTC সময় (Coordinated Universal Time) দেয় এবং এটি সেকেন্ড এবং ন্যানোসেকেন্ড পর্যন্ত নির্ভুল হয়।Instant.ofEpochSecond()
- Epoch সেকেন্ড থেকে Instant তৈরি:import java.time.Instant;
public class InstantEpochSecondExample {
public static void main(String[] args) {
// Create an Instant from epoch second (1970-01-01T00:00:00Z)
Instant instantFromEpoch = Instant.ofEpochSecond(1609459200); // 2021-01-01T00:00:00Z
System.out.println("Instant from epoch second: " + instantFromEpoch);
}
}
Instant from epoch second: 2021-01-01T00:00:00Z
ব্যাখ্যা:
Instant.ofEpochSecond(1609459200)
1970-01-01T00:00:00Z থেকে 1609459200 সেকেন্ড পরের সময়কে একটি Instant
এ পরিণত করে, যা 2021-01-01T00:00:00Z এর সমান।Instant.ofEpochMilli()
- Epoch মিলিসেকেন্ড থেকে Instant তৈরি:import java.time.Instant;
public class InstantEpochMilliExample {
public static void main(String[] args) {
// Create an Instant from epoch milliseconds
Instant instantFromEpochMilli = Instant.ofEpochMilli(1617235200000L); // 2021-04-01T00:00:00Z
System.out.println("Instant from epoch milli: " + instantFromEpochMilli);
}
}
Instant from epoch milli: 2021-04-01T00:00:00Z
ব্যাখ্যা:
Instant.ofEpochMilli(1617235200000L)
1970-01-01T00:00:00Z থেকে 1617235200000 মিলিসেকেন্ড পরের সময়কে Instant
এ পরিণত করেছে, যা 2021-04-01T00:00:00Z এর সমান।plusSeconds()
এবং minusSeconds()
- সেকেন্ড যোগ বা বিয়োগ করা:import java.time.Instant;
public class InstantManipulationExample {
public static void main(String[] args) {
// Create an Instant for the current time
Instant currentInstant = Instant.now();
System.out.println("Current Instant: " + currentInstant);
// Add 1000 seconds to the current time
Instant instantPlus1000Sec = currentInstant.plusSeconds(1000);
System.out.println("Instant after adding 1000 seconds: " + instantPlus1000Sec);
// Subtract 1000 seconds from the current time
Instant instantMinus1000Sec = currentInstant.minusSeconds(1000);
System.out.println("Instant after subtracting 1000 seconds: " + instantMinus1000Sec);
}
}
Current Instant: 2024-12-23T09:40:00.123456Z
Instant after adding 1000 seconds: 2024-12-23T09:56:40.123456Z
Instant after subtracting 1000 seconds: 2024-12-23T09:23:20.123456Z
ব্যাখ্যা:
plusSeconds(1000)
মেথডটি বর্তমান Instant
এর সাথে 1000 সেকেন্ড যোগ করে।minusSeconds(1000)
মেথডটি বর্তমান Instant
থেকে 1000 সেকেন্ড বিয়োগ করে।Duration
দিয়ে দুটি Instant এর মধ্যে পার্থক্য বের করা:import java.time.*;
public class InstantDurationExample {
public static void main(String[] args) {
// Create two Instant objects
Instant start = Instant.now();
Instant end = start.plusSeconds(5000); // Adding 5000 seconds to start
// Calculate the duration between the two Instants
Duration duration = Duration.between(start, end);
System.out.println("Duration in seconds: " + duration.getSeconds());
}
}
Duration in seconds: 5000
ব্যাখ্যা:
Duration.between(start, end)
মেথডটি দুটি Instant
এর মধ্যে সময়ের পার্থক্য বের করে, যা এখানে 5000 সেকেন্ড।duration.getSeconds()
এই পার্থক্যকে সেকেন্ডে রিটার্ন করে।Instant
এবং ZonedDateTime
এর মধ্যে পার্থক্য হলো, Instant
UTC (Universal Time) এর নির্দিষ্ট মুহূর্তকে নির্দেশ করে, যেখানে ZonedDateTime
নির্দিষ্ট সময় অঞ্চল সহ তারিখ এবং সময় প্রতিনিধিত্ব করে।
যখন আপনি Instant
ব্যবহার করেন, তখন আপনি সময় অঞ্চল থেকে মুক্ত থাকেন, কিন্তু ZonedDateTime
ব্যবহার করলে আপনি সময় অঞ্চলকে মান্য করে সময়ের হিসাব করতে পারেন।
Instant
ক্লাসটি UTC সময়ের নির্দিষ্ট মুহূর্ত (epoch time) ধারণ করে এবং এটি সেকেন্ড ও ন্যানোসেকেন্ড পর্যন্ত নির্ভুল।Instant
ব্যবহার করে আপনি সময়ের পার্থক্য বের করতে পারেন, সময়ের যোগ-বিয়োগ করতে পারেন এবং সময়সীমার একটি নির্দিষ্ট মুহূর্ত তৈরি করতে পারেন।Instant
কোনও নির্দিষ্ট সময় অঞ্চলের সাথে সম্পর্কিত নয়, তবে এটি সার্বজনীন (UTC) সময়ের একটি নির্দিষ্ট মুহূর্ত নির্দেশ করে।Read more